﻿using System;

namespace Lesson23_String
{
    class Program
    {
        static void Main(string[] args)
        {
            //string实际上是系统提供的密封类

            #region 一 字符串指定位置获取
            //字符串本质是char数组
            string str = "LiberTy";
            Console.WriteLine(str[0]);  //这里实际上使用的是索引器
            //将字符串转为字符数组
            char[] chars = str.ToCharArray();
            Console.WriteLine(chars[1]);

            //遍历字符串
            for (int i =0; i < str.Length; i++)
            {
                Console.Write(str[i]);
            }
            Console.WriteLine();
            #endregion

            #region 二 字符串拼接
            //静态方法 Format()
            str = string.Format("123" + 123);
            Console.WriteLine(str);
            str = string.Format("{0}{1}" + 123, "haha", "heihei");
            Console.WriteLine(str);
            #endregion

            #region 三 正向查找字符位置
            //成员方法 IndexOf() 返回下标索引 
            str = "LiberTy";
            int index = str.IndexOf('i');
            Console.WriteLine(index);
            //若没找到 则返回-1
            index = str.IndexOf('2');
            Console.WriteLine(index);
            #endregion

            #region 四 反向查找字符位置
            //成员方法 LastIndexOf() 返回下标索引
            str = "我是小明小明";
            index = str.IndexOf("小明");
            Console.WriteLine(index);
            index = str.LastIndexOf("小明");
            Console.WriteLine(index);
            #endregion

            #region 五 移除指定位置后的字符
            //成员方法 Remove() 返回修改后的字符串
            str = "我是小明小明";
            str = str.Remove(4);
            Console.WriteLine(str);
            //参数1 开始位置
            //参数2 移除字符个数
            str = "我是小明小明";
            str = str.Remove(4, 1);
            Console.WriteLine(str);
            #endregion

            #region 六 替换指定字符串
            //成员方法 Replace(参数一 参数二) 返回修改后的字符串
            //参数一 要被替换掉的内容（能找到的所有内容都会被替换）
            //参数二 新内容
            str = "我是小明，我是小明";
            str = str.Replace("小明", "xiaoming");
            Console.WriteLine(str);
            #endregion

            #region 七 大小写转换
            //成员方法ToUpper() 将字符串中所有小写字母转为大写
            str = "abCDeFg";
            str = str.ToUpper();
            Console.WriteLine(str);
            //成员方法ToLower() 将字符串中所有大写字母转为小写
            str = "abCDeFg";
            str = str.ToLower();
            Console.WriteLine(str);
            #endregion

            #region 八 字符串截取
            //成员方法Substring() 返回从开始位置到最后的字符串
            str = "我是小明";
            str = str.Substring(2);
            Console.WriteLine(str);
            //参数一 开始位置
            //参数二 截取字符个数
            str = "我是小明";
            str = str.Substring(2, 1);
            Console.WriteLine(str);
            #endregion

            #region ★★★九 字符串分割
            //成员方法 split() 按传入的字符将目标字符串进行切割
            str = "12,34,56,78,9";
            string[] strs = str.Split(',');
            for (int i = 0; i < strs.Length; i++)
            {
                Console.WriteLine(strs[i]);
            }

            //可按多个字符进行切割
            str = "12,34,56.78.9";
            string[] strs2 = str.Split(',', '.');
            //另一种写法
            //string[] strs2 = str.Split(new char[] {',', '.'});
            for (int i = 0; i < strs2.Length; i++)
            {
                Console.WriteLine(strs2[i]);
            }
            #endregion
        }
    }
}